`timescale 1ns/1ps
`default_nettype none
// -----------------------------------------------------------------------------
// 当 EX 阶段是 LW（ex_memread=1），且其目标寄存器 ex_rd 被 ID 阶段使用
// (ex_rd == id_rs1 || ex_rd == id_rs2) 时：
//   - 冻结 PC 与 IF/ID（stall=1）
//   - 对 ID/EX 注入一拍气泡（flush=1，清空控制信号）
// -----------------------------------------------------------------------------
module hazard_unit(
    input  wire        ex_memread,
    input  wire [4:0]  ex_rd,
    input  wire [4:0]  id_rs1,
    input  wire [4:0]  id_rs2,
    output wire        stall,   // 给 PC.en 和 IF/ID.en 取反
    output wire        flush    // 给 ID/EX.flush
);
    wire hazard = ex_memread && (ex_rd != 5'd0) &&
                 ((ex_rd == id_rs1) || (ex_rd == id_rs2));
    assign stall = hazard;
    assign flush = hazard;
endmodule
`default_nettype wire
